home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
mac
/
LOGIC Apple II 5.25" Library - ProDOS
/
PRO018.dsk
/
FATHOM.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
7KB
|
171 lines
100 REM FATHOM BY JIM HILGER. HIT SUBS WITH DEPTHCHARGES.
110 I = J = SS = D = T = S = OO = FI = M = SK = TM = FT:F = 127:S1 = 49249:SP = 49200
120 DIM XDC(5),YDC(5),XT(5),YT(5),XS(5),YS(5): GOTO 150
130 POKE 776,Q: POKE 777,E: CALL 778: REM MAKE A NOISE
140 IF FI = 0 AND D <5 AND PEEK(S1) >F THEN FI = 1:Z = PEEK(SP) + PEEK(SP) + PEEK(SP)
145 RETURN
150 GOSUB 1230: REM INITIALIZE
160 D = 0:S = 0:T = 0:OO = 0
170 FOR I = 1 TO 5:YS(I) = 60: NEXT
180 FOR I = 80 TO 140 STEP 20
190 J = 1 +5 * RND(1): IF YS(J) >60 GOTO 190
200 YS(J) = I: NEXT
210 REM <CTRL-J>MAIN LOOP OF PROGRAM:<CTRL-J>
220 GOSUB 140: REM TEST SW 1
230 P = PDL(0): REM MOVE SHIP?
240 REM MOVE SHIP LEFT
250 IF P >85 OR SS <15 GOTO 280
260 HCOLOR= 0: DRAW 1 AT SS,20:SS = SS -6: HCOLOR= 3: DRAW 1 AT SS,20
270 GOTO 310
280 REM MOVE SHIP RIGHT
290 IF P <170 OR SS >235 GOTO 310
300 HCOLOR= 0: DRAW 1 AT SS,20:SS = SS +6: HCOLOR= 3: DRAW 1 AT SS,20
310 REM SHIP FIRE?
320 IF D >4 THEN FI = 0: GOTO 410
330 GOSUB 140: IF NOT FI GOTO 400
340 HCOLOR= 3: DRAW 5 AT SS +15,30
350 D = D +1
360 FOR I = 1 TO 5
370 IF XDC(I) = 0 THEN M = I:I = 5
380 NEXT :FI = 0
390 XDC(M) = SS +15:YDC(M) = 30
400 REM MOVE SUBS
410 GOSUB 140: IF NOT S GOTO 500
420 FOR I = 1 TO 5
430 IF XS(I) = 0 THEN 490
440 HCOLOR= 0:SH = 2.5 -.5 *DS(I): DRAW SH AT XS(I),YS(I)
450 XS(I) = XS(I) +DS(I) *5
460 IF XS(I) <15 THEN DS(I) = -1 *DS(I):XS(I) = 15
470 IF XS(I) >250 THEN DS(I) = -1 *DS(I):XS(I) = 250
480 HCOLOR= 6:SH = 2.5 -.5 *DS(I): DRAW SH AT XS(I),YS(I)
490 NEXT I
500 REM MOVE WEAPONRY
510 GOSUB 140: IF D = 0 GOTO 610
530 FOR I = 1 TO 5
540 IF XDC(I) = 0 THEN 600
550 HCOLOR= 0: DRAW 5 AT XDC(I),YDC(I)
560 YDC(I) = YDC(I) +10
570 HCOLOR= 3: DRAW 5 AT XDC(I),YDC(I)
580 IF YDC(I) <141 THEN 600
590 HCOLOR= 0: DRAW 5 AT XDC(I),YDC(I):XDC(I) = 0:D = D -1
600 NEXT I
610 IF T = 0 THEN 660
620 FOR I = 1 TO 5
630 IF XT(I) = 0 THEN 650
640 HCOLOR= 0: DRAW 6 AT XT(I),YT(I):YT(I) = YT(I) -10: HCOLOR= 3: DRAW 6 AT XT(I),YT(I)
650 NEXT I
660 REM SHIP HIT?
670 FOR I = 1 TO 5
680 IF XT(I) = 0 THEN 770
690 IF YT(I) >30 THEN 770
700 IF ABS(SS -XT(I) +13) >14 THEN 740
710 HT = XT(I)
720 HCOLOR= 5: DRAW 4 AT HT,21::Q = 200:E = 100: GOSUB 130: DRAW 4 AT HT,16: GOSUB 130: DRAW 4 AT HT -5,12: GOSUB 130: DRAW 4 AT HT +2,9
730 OO = 1:I = 5: GOTO 770
740 HCOLOR= 0: DRAW 6 AT XT(I),YT(I):T = T -1
750 HCOLOR= 6: DRAW 4 AT XT(I),19: FOR BB = 1 TO 100: NEXT BB
760 HCOLOR= 0: DRAW 4 AT XT(I),19:XT(I) = 0
770 NEXT I
780 IF OO THEN VTAB 21: PRINT " YOUR SHIP WAS DESTROYED. TRY AGAIN?";: GOTO 1560
790 REM SUB HIT?
800 IF D = 0 OR S = 0 THEN 940
810 FOR I = 1 TO 5
820 IF XS(I) = 0 THEN 930
830 FOR J = 1 TO 5
840 IF XDC(J) = 0 THEN 920
850 IF YS(I) < >YDC(J) THEN 920
860 IF ABS(XDC(J) -XS(I) -9) >10 THEN 920
870 HCOLOR= 5:SH = 2.5 -.5 *DS(I): DRAW SH AT XS(I),YS(I)
880 SC = SC +1: VTAB 23: HTAB 25: PRINT "SUB HITS: ";SC
890 Q = 250:E = 50: GOSUB 130
900 HCOLOR= 0: DRAW 5 AT XDC(J),YDC(J):XDC(J) = 0:D = D -1
910 DRAW SH AT XS(I),YS(I):XS(I) = 0:S = S -1
920 NEXT J
930 NEXT I
940 REM SUB FIRE?
950 IF S = 0 THEN 1050
960 FOR I = 1 TO 5
970 IF XS(I) = 0 THEN 1040
980 IF XT(I) >0 THEN 1040
990 IF ABS(SS -XS(I)) >15 +YS(I)/5 THEN 1040
1000 IF RND(1) >.8 THEN 1040
1010 XT(I) = XS(I) +10:YT(I) = YS(I) -10
1020 HCOLOR= 3: DRAW 6 AT XT(I),YT(I)
1030 T = T +1
1040 NEXT I
1050 REM SUB APPEAR?
1060 IF S >4 THEN 1170
1070 R = RND(1): IF R >.3 AND R <SK THEN 1100
1080 IF S = 0 THEN 1100
1090 GOTO 1170
1100 FOR I = 1 TO 5: IF XS(I) = 0 THEN M = I:I = 5
1110 NEXT I
1120 S = S +1:DS(M) = -1 ^( RND(1) <.5)
1130 IF DS(M) = -1 THEN XS(M) = 250
1140 IF DS(M) = 1 THEN XS(M) = 15
1150 HCOLOR= 6:SH = 2.5 -.5 *DS(M): DRAW SH AT XS(M),YS(M)
1160 GOTO 1170
1170 REM SONAR BLIP
1180 Q = 150:E = 10: GOSUB 130
1190 Q = 120:E = 10: GOSUB 130
1200 TM = TM +1: VTAB 23: HTAB 3: PRINT "TIME :";TM
1210 IF TM = 200 THEN 1550
1220 GOTO 220
1230 REM SET UP SHAPE TBL @ 7700
1240 ON PEEK(8191) = 165 GOTO 1300: POKE 8191,165
1250 FOR I = 7700 TO 8155: READ X: POKE I,X: NEXT
1260 POKE 232,20: POKE 233,30
1270 REM POKE SOUND-ROUTINE
1280 POKE 776,255: POKE 777,255: POKE 778,173: POKE 779,48: POKE 780,192: POKE 781,136: POKE 782,208: POKE 783,5: POKE 784,206: POKE 785,9: POKE 786,3: POKE 787,240
1290 POKE 788,9: POKE 789,202: POKE 790,208: POKE 791,245: POKE 792,174: POKE 793,8: POKE 794,3: POKE 795,76: POKE 796,10: POKE 797,3: POKE 798,96
1300 PRINT CHR$(21): TEXT : HOME : NORMAL : SPEED= 255
1310 PRINT "F A T H O M -- ANTI-SUBMARINE WARFARE!----------------------------------------"
1320 PRINT TAB( 13)"BY JIM HILGER"
1330 VTAB 8: PRINT "STEER YOUR SHIP WITH PADDLE ZERO."
1340 PRINT : PRINT "PRESS BUTTON TO DROP A DEPTHCHARGE."
1350 PRINT : PRINT "WATCH OUT FOR TORPEDOES!"
1360 VTAB 18: PRINT "TURN PADDLE 0 TO SET THE SKILL LEVEL, (1=EASY ... 8=LETHAL)."
1370 VTAB 24: PRINT "PRESS & RELEASE BUTTON TO BEGIN.";
1380 SK = INT( PDL(0)/32 +1): VTAB 21: HTAB 1: PRINT "SKILL LEVEL = "SK"."
1390 IF PEEK(S1) = <F GOTO 1380
1400 IF PEEK(S1) >F GOTO 1400
1410 LE = SK
1420 IF SK <1 OR SK >8 THEN 1360
1430 SK = .31 +.01 *(1.7 ^(SK -1))
1440 HOME : HGR
1450 ROT= 0: SCALE= 1
1460 HCOLOR= 6: HPLOT 0,29 TO 279,29
1470 HCOLOR= 3
1480 DRAW 1 AT 130,20
1490 SS = 130
1500 SC = 0:TM = 0
1510 VTAB 21: HTAB 3: PRINT "PRESS BUTTON TO DROP DEPTHCHARGE."
1520 VTAB 23: HTAB 14: PRINT "LEVEL ";LE
1530 VTAB 23: HTAB 25: PRINT "SUB HITS: ";SC
1540 RETURN
1550 VTAB 21: PRINT " YOU WIN! DO YOU WANT TO TRY AGAIN? ";
1560 POKE 49168,0: GET K$: IF K$ = "Y" OR K$ = "y" THEN RUN
1570 TEXT : HOME : PRINT CHR$(4)"-STARTUP"
1580 DATA 6,0,14,0,165,0,11,1,112,1,163,1,182,1,9,9,9,9,41,9
1590 DATA 9,9,9,41,9,9,9,9,17,27,27,27,27,27,31,59,31,63,27,31
1600 DATA 27,27,27,19,9,9,9,9,41,9,45,41,13,41,9,9,9,9,17,59
1610 DATA 27,27,27,27,31,63,63,63,31,31,27,27,27,19,41,45,13,41,45,45
1620 DATA 45,45,45,45,45,9,9,41,17,27,59,27,27,59,63,63,63,63,63,63
1630 DATA 27,27,31,19,45,45,45,45,45,45,45,45,45,45,45,45,45,45,53,27
1640 DATA 63,63,63,63,63,63,63,63,63,63,63,63,63,23,9,45,45,45,45,45
1650 DATA 45,45,45,45,45,45,45,9,17,27,27,27,27,27,27,27,27,27,27,27
1660 DATA 27,27,27,19,0,9,9,9,9,9,45,9,9,9,17,27,27,27,27,59
1670 DATA 27,27,27,27,19,9,9,9,9,9,13,9,9,9,17,27,27,27,59,63
1680 DATA 63,27,27,27,19,9,9,9,9,45,45,13,9,9,17,27,27,27,63,63
1690 DATA 63,31,27,27,19,45,45,45,45,45,45,45,45,45,53,59,63,63,63,63
1700 DATA 63,63,63,27,55,9,9,41,45,45,45,45,45,13,17,27,27,27,27,27
1710 DATA 27,27,27,27,19,0,9,9,9,41,13,9,9,9,9,17,27,27,27,27
1720 DATA 27,59,27,27,27,19,9,9,9,9,13,9,9,9,9,17,27,27,27,27
1730 DATA 59,63,63,27,27,19,9,9,9,45,45,13,9,9,9,17,27,27,27,27
1740 DATA 63,63,63,31,27,19,45,45,45,45,45,45,45,45,45,53,63,27,63,63
1750 DATA 63,63,63,63,63,23,9,41,45,45,45,45,45,13,9,17,27,27,27,27
1760 DATA 27,27,27,27,27,19,0,41,9,9,9,17,27,31,27,27,19,9,13,9
1770 DATA 9,17,27,59,27,59,19,13,41,9,13,49,59,27,31,31,23,9,13,45
1780 DATA 41,17,27,63,27,63,19,9,41,45,13,17,27,27,63,27,19,0,9,13
1790 DATA 26,59,19,9,13,26,63,23,45,45,62,63,55,45,45,6,0,9,13,26
1800 DATA 63,23,45,45,62,63,55,9,13,26,63,23,45,41,6,0